@@ -1,17 +1,17 @@ |
||
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
|
3 |
+from django.conf import settings |
|
3 | 4 |
from django.contrib import admin |
4 | 5 |
from django.contrib.auth.hashers import make_password |
5 |
-from django.conf import settings |
|
6 |
- |
|
7 | 6 |
from pysnippets.strsnippets import strip |
8 | 7 |
|
9 |
-from account.models import UserInfo, AdministratorInfo |
|
8 |
+from account.models import AdministratorInfo, UserInfo |
|
10 | 9 |
|
11 | 10 |
|
12 | 11 |
class UserInfoAdmin(admin.ModelAdmin): |
13 | 12 |
list_display = ('user_id', 'unionid', 'openid', 'nickname', 'sex', 'avatar', 'phone', 'country', 'province', 'city', 'status', 'created_at', 'updated_at') |
14 | 13 |
|
14 |
+ |
|
15 | 15 |
class AdministratorInfoAdmin(admin.ModelAdmin): |
16 | 16 |
list_display = ('admin_id', 'admin_type', 'password', 'encryption', 'name', 'user_status', 'status', 'created_at', 'updated_at') |
17 | 17 |
list_filter = ('admin_type', 'user_status', 'status') |
@@ -20,7 +20,7 @@ class UserInfo(BaseModelMixin): |
||
20 | 20 |
province = models.CharField(_(u'province'), max_length=255, blank=True, null=True, help_text=u'用户省份') |
21 | 21 |
city = models.CharField(_(u'city'), max_length=255, blank=True, null=True, help_text=u'用户城市') |
22 | 22 |
|
23 |
- #收货信息 |
|
23 |
+ # 收货信息 |
|
24 | 24 |
consignee_name = models.CharField(_(u'consignee_name'), max_length=255, blank=True, null=True, help_text=u'收货人姓名') |
25 | 25 |
consignee_phone = models.CharField(_(u'consignee_phone'), max_length=255, blank=True, null=True, help_text=u'收货人电话') |
26 | 26 |
consignee_address = models.CharField(_(u'consignee_address'), max_length=255, blank=True, null=True, help_text=u'收货人地址') |
@@ -57,6 +57,7 @@ class UserInfo(BaseModelMixin): |
||
57 | 57 |
'avatar': self.avatar, |
58 | 58 |
} |
59 | 59 |
|
60 |
+ |
|
60 | 61 |
class AdministratorInfo(BaseModelMixin): |
61 | 62 |
ADMINISTRATOR = 0 |
62 | 63 |
|
@@ -89,4 +90,4 @@ class AdministratorInfo(BaseModelMixin): |
||
89 | 90 |
verbose_name_plural = _(u'管理员信息') |
90 | 91 |
|
91 | 92 |
def __unicode__(self): |
92 |
- return u'{}-{}'.format(self.name, self.phone) |
|
93 |
+ return u'{}-{}'.format(self.name, self.phone) |
@@ -2,24 +2,23 @@ |
||
2 | 2 |
|
3 | 3 |
import logging |
4 | 4 |
|
5 |
-from django.conf import settings |
|
5 |
+from django.contrib.auth.hashers import check_password |
|
6 | 6 |
from django.db import transaction |
7 |
+from django.db.models import Q |
|
7 | 8 |
from django_logit import logit |
8 | 9 |
from django_response import response |
9 |
-from django.contrib.auth.hashers import check_password |
|
10 |
-from django.db.models import Q |
|
11 |
- |
|
12 | 10 |
from TimeConvert import TimeConvert as tc |
13 | 11 |
|
14 |
-from account.models import UserInfo, AdministratorInfo |
|
12 |
+from account.models import AdministratorInfo |
|
15 | 13 |
from goods.models import GoodsInfo, PackInfo |
16 | 14 |
from kol.models import KOLInfo |
17 | 15 |
from pay.models import OrderInfo |
16 |
+from utils.error.errno_utils import AdministratorStatusCode, OrderStatusCode |
|
18 | 17 |
|
19 |
-from utils.error.errno_utils import AdministratorStatusCode |
|
20 | 18 |
|
21 | 19 |
logger = logging.getLogger('logit') |
22 | 20 |
|
21 |
+ |
|
23 | 22 |
@logit(res=True) |
24 | 23 |
def login(request): |
25 | 24 |
name = request.POST.get('name', '') |
@@ -49,60 +48,68 @@ def login(request): |
||
49 | 48 |
@logit(res=True) |
50 | 49 |
@transaction.atomic |
51 | 50 |
def order_list(request): |
52 |
- admin_id = request.POST.get('admin_id', '') |
|
53 |
- kol_id = request.POST.get('kol_id', '') |
|
54 |
- pack_id = request.POST.get('pack_id', '') |
|
55 |
- ftime = request.POST.get('ftime', '') |
|
56 |
- ttime = request.POST.get('ttime', '') |
|
57 |
- query = request.POST.get('query', '') |
|
51 |
+ admin_id = request.POST.get('admin_id', '') |
|
52 |
+ kol_id = request.POST.get('kol_id', '') |
|
53 |
+ pack_id = request.POST.get('pack_id', '') |
|
54 |
+ ftime = request.POST.get('ftime', '') |
|
55 |
+ ttime = request.POST.get('ttime', '') |
|
56 |
+ query = request.POST.get('query', '') |
|
58 | 57 |
|
59 |
- page = request.POST.get('page', 0) |
|
60 |
- num = request.POST.get('num', 20) |
|
58 |
+ page = request.POST.get('page', 0) |
|
59 |
+ num = request.POST.get('num', 20) |
|
61 | 60 |
|
62 |
- try: |
|
63 |
- administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) |
|
64 |
- except AdministratorInfo.DoesNotExist: |
|
65 |
- return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) |
|
61 |
+ try: |
|
62 |
+ administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) |
|
63 |
+ except AdministratorInfo.DoesNotExist: |
|
64 |
+ return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) |
|
66 | 65 |
|
67 |
- infos = OrderInfo.objects.filter(Q(phone__contains=query) | Q(name__contains=query) & Q(kol_id__contains=kol_id) & Q(pack_id__contains=pack_id)& Q(pay_status=1)).order_by('-paid_at') |
|
66 |
+ infos = OrderInfo.objects.filter( |
|
67 |
+ Q(phone__contains=query) | Q(name__contains=query) & Q(kol_id__contains=kol_id) & Q( |
|
68 |
+ pack_id__contains=pack_id) & Q(pay_status=1)).order_by('-paid_at') |
|
68 | 69 |
|
69 |
- res = [] |
|
70 |
+ res = [] |
|
70 | 71 |
|
71 |
- for info in infos: |
|
72 |
- goods_info = [] |
|
73 |
- try: |
|
74 |
- pack = PackInfo.objects.get(pack_id=info.pack_id) |
|
75 |
- kol = KOLInfo.objects.get(kol_id=info.kol_id) |
|
72 |
+ for info in infos: |
|
73 |
+ goods_info = [] |
|
74 |
+ try: |
|
75 |
+ pack = PackInfo.objects.get(pack_id=info.pack_id) |
|
76 |
+ except PackInfo.DoesNotExist: |
|
77 |
+ continue |
|
76 | 78 |
|
77 |
- for g in info.goods_info: |
|
78 | 79 |
try: |
79 |
- goods = GoodsInfo.objects.get(good_id=g.get('good_id', '')) |
|
80 |
- goods_info.append({ |
|
81 |
- 'title': goods.title, |
|
82 |
- 'num': g.get('num', 0) |
|
83 |
- }) |
|
84 |
- except: |
|
85 |
- continue |
|
86 |
- |
|
87 |
- res.append({ |
|
88 |
- 'name': info.name, |
|
89 |
- 'phone': info.phone, |
|
90 |
- 'address': info.address, |
|
91 |
- 'paid_at': tc.local_string(utc_dt=info.paid_at, format='%Y-%m-%d %H:%M'), |
|
92 |
- 'order_id': info.order_id, |
|
93 |
- 'transaction_id': info.transaction_id, |
|
94 |
- 'tracking_number': info.tracking_number, |
|
95 |
- 'goods_info': goods_info, |
|
96 |
- 'kol_name': kol.name, |
|
97 |
- 'pack_title': pack.title |
|
98 |
- }) |
|
99 |
- except: |
|
100 |
- continue |
|
101 |
- |
|
102 |
- return response(200, 'Order List Success', u'获取订单列表成功', { |
|
80 |
+ kol = KOLInfo.objects.get(kol_id=info.kol_id) |
|
81 |
+ except KOLInfo.DoesNotExist: |
|
82 |
+ continue |
|
83 |
+ |
|
84 |
+ for g in info.goods_info: |
|
85 |
+ try: |
|
86 |
+ goods = GoodsInfo.objects.get(good_id=g.get('good_id', '')) |
|
87 |
+ except GoodsInfo.DoesNotExist: |
|
88 |
+ continue |
|
89 |
+ |
|
90 |
+ goods_info.append({ |
|
91 |
+ 'title': goods.title, |
|
92 |
+ 'num': g.get('num', 0) |
|
93 |
+ }) |
|
94 |
+ |
|
95 |
+ res.append({ |
|
96 |
+ 'name': info.name, |
|
97 |
+ 'phone': info.phone, |
|
98 |
+ 'address': info.address, |
|
99 |
+ 'paid_at': tc.local_string(utc_dt=info.paid_at, format='%Y-%m-%d %H:%M'), |
|
100 |
+ 'order_id': info.order_id, |
|
101 |
+ 'transaction_id': info.transaction_id, |
|
102 |
+ 'tracking_number': info.tracking_number, |
|
103 |
+ 'goods_info': goods_info, |
|
104 |
+ 'kol_name': kol.name, |
|
105 |
+ 'pack_title': pack.title |
|
106 |
+ }) |
|
107 |
+ |
|
108 |
+ return response(200, 'Order List Success', u'获取订单列表成功', { |
|
103 | 109 |
'orders': res |
104 | 110 |
}) |
105 | 111 |
|
112 |
+ |
|
106 | 113 |
@logit(res=True) |
107 | 114 |
@transaction.atomic |
108 | 115 |
def order_update(request): |
@@ -111,15 +118,16 @@ def order_update(request): |
||
111 | 118 |
tracking_number = request.POST.get('tracking_number', '') |
112 | 119 |
|
113 | 120 |
try: |
114 |
- administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) |
|
121 |
+ administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) |
|
115 | 122 |
except AdministratorInfo.DoesNotExist: |
116 |
- return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) |
|
123 |
+ return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) |
|
117 | 124 |
|
118 | 125 |
try: |
119 |
- order = OrderInfo.objects.get(order_id=order_id) |
|
120 |
- order.tracking_number = tracking_number |
|
121 |
- order.save() |
|
126 |
+ order = OrderInfo.objects.get(order_id=order_id) |
|
122 | 127 |
except OrderInfo.DoesNotExist: |
123 |
- return response(400001, 'Order Not Found', u'订单不存在') |
|
124 |
- |
|
125 |
- return response(200, 'Order Update Success', u'订单更新成功') |
|
128 |
+ return response(OrderStatusCode.ORDER_NOT_FOUND) |
|
129 |
+ |
|
130 |
+ order.tracking_number = tracking_number |
|
131 |
+ order.save() |
|
132 |
+ |
|
133 |
+ return response(200, 'Order Update Success', u'订单更新成功') |
@@ -2,7 +2,7 @@ |
||
2 | 2 |
|
3 | 3 |
from django.conf.urls import url |
4 | 4 |
|
5 |
-from api import mini_views, oauth_views, pack_views, admin_views |
|
5 |
+from api import admin_views, mini_views, oauth_views, pack_views |
|
6 | 6 |
from pay import views as pay_views |
7 | 7 |
|
8 | 8 |
|
@@ -27,8 +27,6 @@ urlpatterns += [ |
||
27 | 27 |
url(r'^admin/order/update$', admin_views.order_update, name='order_update'), # 订单列表 |
28 | 28 |
] |
29 | 29 |
|
30 |
- |
|
31 |
- |
|
32 | 30 |
urlpatterns += [ |
33 | 31 |
url(r'^3rd/or$', oauth_views.oauth_redirect, name='3rd_or'), |
34 | 32 |
url(r'^3rd/oauth_redirect$', oauth_views.oauth_redirect, name='3rd_oauth_redirect'), |
@@ -87,7 +87,7 @@ class PackGoodsInfo(BaseModelMixin): |
||
87 | 87 |
good = GoodsInfo.objects.get(good_id=self.good_id) |
88 | 88 |
except GoodsInfo.DoesNotExist: |
89 | 89 |
good = {} |
90 |
- |
|
90 |
+ |
|
91 | 91 |
data = good.data |
92 | 92 |
data.update({'inventory': self.inventory, 'has_sale_num': self.has_sale_num}) |
93 | 93 |
return data |
@@ -1,7 +1,7 @@ |
||
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
|
3 | 3 |
from django.contrib import admin |
4 |
-from django_admin import ReadOnlyModelAdmin, Readonly2ModelAdmin |
|
4 |
+from django_admin import Readonly2ModelAdmin, ReadOnlyModelAdmin |
|
5 | 5 |
|
6 | 6 |
from pay.models import OrderInfo |
7 | 7 |
|
@@ -71,4 +71,4 @@ class OrderInfo(BaseModelMixin): |
||
71 | 71 |
verbose_name_plural = _('订单信息') |
72 | 72 |
|
73 | 73 |
def __unicode__(self): |
74 |
- return self.pk |
|
74 |
+ return self.pk |
@@ -76,7 +76,7 @@ def wx_order_create_api(request): |
||
76 | 76 |
for g in goods_info: |
77 | 77 |
try: |
78 | 78 |
good = GoodsInfo.objects.get(good_id=g.get('good_id', '')) |
79 |
- except: |
|
79 |
+ except GoodsInfo.DoesNotExist: |
|
80 | 80 |
continue |
81 | 81 |
amount = amount + good.price * g.get('num', 0) |
82 | 82 |
|
@@ -116,7 +116,7 @@ def wx_order_create_api(request): |
||
116 | 116 |
except WeChatPayException as e: |
117 | 117 |
order.unifiedorder_result = e.args |
118 | 118 |
order.save() |
119 |
- return response(OrderStatusCode.WX_UNIFIED_ORDER_FAIL) |
|
119 |
+ return response(OrderStatusCode.UNIFIED_ORDER_FAIL) |
|
120 | 120 |
|
121 | 121 |
prepay_id = prepay_data.get('prepay_id', '') |
122 | 122 |
order.prepay_id = prepay_id |
@@ -2,6 +2,7 @@ |
||
2 | 2 |
|
3 | 3 |
from StatusCode import BaseStatusCode, StatusCodeField |
4 | 4 |
|
5 |
+ |
|
5 | 6 |
class AdministratorStatusCode(BaseStatusCode): |
6 | 7 |
""" 操作员相关错误码 4002xx """ |
7 | 8 |
ADMINISTRATOR_NOT_FOUND = StatusCodeField(400201, 'Administrator Not Found', description=u'管理员不存在') |
@@ -14,6 +15,7 @@ class AdministratorStatusCode(BaseStatusCode): |
||
14 | 15 |
ADMINISTRATOR_HAS_DISABLED = StatusCodeField(400216, 'Administrator Has Disabled', description=u'管理员已禁用') |
15 | 16 |
ADMINISTRATOR_HAS_DELETED = StatusCodeField(400217, 'Administrator Has Deleted', description=u'管理员已删除') |
16 | 17 |
|
18 |
+ |
|
17 | 19 |
class ParamStatusCode(BaseStatusCode): |
18 | 20 |
""" 4000xx 参数相关错误码 """ |
19 | 21 |
PARAM_NOT_FOUND = StatusCodeField(400000, 'Param Not Found', description=u'参数不存在') |
@@ -48,7 +50,6 @@ class PackGoodsStatusCode(BaseStatusCode): |
||
48 | 50 |
PACK_GOODS_INVENTORY_SHORTAGE = StatusCodeField(403002, 'Pack Goods Inventory Shortage', description=u'库存不足') |
49 | 51 |
|
50 | 52 |
|
51 |
- |
|
52 | 53 |
class OrderStatusCode(BaseStatusCode): |
53 | 54 |
""" 4040xx 订单/支付相关错误码 """ |
54 | 55 |
UNIFIED_ORDER_FAIL = StatusCodeField(404000, 'Unified Order Fail', description=u'统一下单失败') |